package com.yfs.bus.entity;

import com.yfs.bus.exception.BussinessException;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.HashMap;
import java.util.LinkedList;

/**
 * @description: 甲型出租车
 * @param:
 * @return:
 * @author: xia
 * @time: 2022/4/13 11:31
 */
public class MiniBus extends Bus {


    public MiniBus(HashMap<Integer, LinkedList<BasePrice>> floatPrice) {
        super(1, floatPrice);
    }

    /**
     * @description: 计算价格
     * @param:
     * @return:
     * @author: xia
     * @time: 2022/4/13 11:50
     */
    @Override
    public BigDecimal runPrice(LocalTime beginTime, Integer km) {
        //判断时间是白天还是夜晚
        Integer dayType = getDayType(beginTime);
        LinkedList<BasePrice> basePrices = floatPrice.get(dayType);
        for (BasePrice price : basePrices) {
            if (km >= price.getBeginKm() && (km < price.getEndKm() || price.getEndKm() == -1)) {
                //TODO 如果该类型出租车有对应的优惠活动可以在此扩展，或者定义一个扩展接口，需要优惠的出租车重写优惠接口也可
                if (price.getPriceType() == 1) {
                    //固定价格
                    return price.getPrice();
                } else {
                    //每公里价格
                    return price.getPrice().multiply(new BigDecimal(km));
                }
            }
        }
        throw new BussinessException("没有找到对应公里数的标价");
    }


}
